<html>
	<head>
		<meta charset="utf-8"></meta>
		<title>BMenu</title>
		<link href="./style.css" rel="stylesheet" type="text/css"/>
	</head>
	<body>
		<div class="class" name="BMenu">
			<h1>BMenu</h1>
			<p>继承自<a href="BWidget.html">BWidget</a></p>
			<p id="resume">BMenu是菜单控件，包含子菜单和行为（<a>BAction</a>），常以弹出的方式为操作提供选择。<a href="#desc">详细</a></p>
			<h2>public</h2>
			<table id="public">
				<tr><td align="right"/><td><a href="#BMenu(BWidget*)">BMenu</a>(BWidget* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#BMenu(const BString&,BWidget*)">BMenu</a>(const BString&amp; title, BWidget* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#BMenu(BIcon*, const BString&,BWidget*)">BMenu</a>(BIcon* icon, const BString&amp; title, BWidget* parent = 0);</td></tr>
				<tr><td align="right"/><td><a href="#~BMenu()">~BMenu</a>();</td></tr>
				<tr><td align="right">void </td><td><a href="#setAlign(Align)">setAlign</a>(Align align);</td></tr>
				<tr><td align="right">Align </td><td><a href="#align() const">align</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setForm(Form)">setForm</a>(Form form);</td></tr>
				<tr><td align="right">Form </td><td><a href="#form() const">form</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setSpacing(int)">setSpacing</a>(int spacing);</td></tr>
				<tr><td align="right">int </td><td><a href="#spacing() const">spacing</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setOrientation(Orientation)">setOrientation</a>(Orientation orientation);</td></tr>
				<tr><td align="right">Orientation </td><td><a href="#orientation() const">orientation</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setShortcutVisible(bool)">setShortcutVisible</a>(bool shortcutVisible);</td></tr>
				<tr><td align="right">bool </td><td><a href="#shortcutVisible() const">shortcutVisible</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setOffset(int, int)">setOffset</a>(int offx, int offy);</td></tr>
				<tr><td align="right">void </td><td><a href="#setOffset(const BPoint&)">setOffset</a>(const BPoint&amp; offset);</td></tr>
				<tr><td align="right">const BPoint&amp; </td><td><a href="#offset() const">offset</a>() const;</td></tr>
				<tr><td align="right">void </td><td><a href="#setIconSize(const BSize&)">setIconSize</a>(const BSize&amp; iconSize);</td></tr>
				<tr><td align="right">const BSize&amp; </td><td><a href="#iconSize() const">iconSize</a>() const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#addAction(BAction*)">addAction</a>(BAction* action);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#addAction(const BString&)">addAction</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#addAction(BIcon*, const BString&)">addAction</a>(BIcon* icon, const BString&amp; text);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#addAction(BImage*, const BString&)">addAction</a>(BImage* image, const BString&amp; text);</td></tr>
				<tr><td align="right">bool </td><td><a href="#insertAction(int, BAction*)">insertAction</a>(int pos, BAction* action);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#insertAction(int, const BString&)">insertAction</a>(int pos, const BString&amp; text);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#insertAction(int, BIcon*, const BString&)">insertAction</a>(int pos, BIcon* icon, const BString&amp; text);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#insertAction(int, BImage*, const BString&)">insertAction</a>(int pos, BImage* image, const BString&amp; text);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeAction(BAction*)">removeAction</a>(BAction* action);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeAction(const BString&)">removeAction</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#action(int)">action</a>(int index);</td></tr>
				<tr><td align="right">const BAction* </td><td><a href="#action(int) const">action</a>(int index) const;</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#action(const BString&)">action</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">const BAction* </td><td><a href="#action(const BString&) const">action</a>(const BString&amp; text) const;</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#actionOfAsset(const BValue&)">actionOfAsset</a>(const BValue&amp; value);</td></tr>
				<tr><td align="right">const BAction* </td><td><a href="#actionOfAsset(const BValue&) const">actionOfAsset</a>(const BValue&amp; value) const;</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#findAction(const BString&)">findAction</a>(const BString&amp; text);</td></tr>
				<tr><td align="right">const BAction* </td><td><a href="#findAction(const BString&) const">findAction</a>(const BString&amp; text) const;</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#namedAction(const BString&)">namedAction</a>(const BString&amp; name);</td></tr>
				<tr><td align="right">const BAction* </td><td><a href="#namedAction(const BString&) const">namedAction</a>(const BString&amp; name) const;</td></tr>
				<tr><td align="right">BAction* </td><td><a href="#locateAction(const BString&)">locateAction</a>(const BString&amp; path);</td></tr>
				<tr><td align="right">const BAction* </td><td><a href="#locateAction(const BString&) const">locateAction</a>(const BString&amp; path) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#addMenu(BMenu*)">addMenu</a>(BMenu* menu);</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#addMenu(const BString&)">addMenu</a>(const BString&amp; title);</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#addMenu(BIcon*, const BString&)">addMenu</a>(BIcon* icon, const BString&amp; title);</td></tr>
				<tr><td align="right">bool </td><td><a href="#insertMenu(int, BMenu*)">insertMenu</a>(int pos, BMenu* menu);</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#insertMenu(int, const BString&)">insertMenu</a>(int pos, const BString&amp; title);</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#insertMenu(int, BIcon*, const BString&)">insertMenu</a>(int pos, BIcon* icon, const BString&amp; title);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeMenu(BMenu*)">removeMenu</a>(BMenu* menu);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeMenu(const BString&)">removeMenu</a>(const BString&amp; title);</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#menu(int)">menu</a>(int index);</td></tr>
				<tr><td align="right">const BMenu* </td><td><a href="#menu(int) const">menu</a>(int index) const;</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#menu(const BString&)">menu</a>(const BString&amp; title);</td></tr>
				<tr><td align="right">const BMenu* </td><td><a href="#menu(const BString&) const">menu</a>(const BString&amp; title) const;</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#menuOfAsset(const BValue&)">menuOfAsset</a>(const BValue&amp; value);</td></tr>
				<tr><td align="right">const BMenu* </td><td><a href="#menuOfAsset(const BValue&) const">menuOfAsset</a>(const BValue&amp; value) const;</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#findMenu(const BString&)">findMenu</a>(const BString&amp; title);</td></tr>
				<tr><td align="right">const BMenu* </td><td><a href="#findMenu(const BString&) const">findMenu</a>(const BString&amp; title) const;</td></tr>
				<tr><td align="right">BMenu* </td><td><a href="#locateMenu(const BString&)">locateMenu</a>(const BString&amp; path);</td></tr>
				<tr><td align="right">const BMenu* </td><td><a href="#locateMenu(const BString&) const">locateMenu</a>(const BString&amp; path) const;</td></tr>
				<tr><td align="right">bool </td><td><a href="#addSeparator()">addSeparator</a>();</td></tr>
				<tr><td align="right">bool </td><td><a href="#insertSeparator(int)">insertSeparator</a>(int index);</td></tr>
				<tr><td align="right">bool </td><td><a href="#insertSeparator(const BObject*)">insertSeparator</a>(const BObject* before);</td></tr>
				<tr><td align="right">bool </td><td><a href="#isSeparator(int)">isSeparator</a>(int index);</td></tr>
				<tr><td align="right">bool </td><td><a href="#removeSeparator(int)">removeSeparator</a>(int index);</td></tr>
				<tr><td align="right">void </td><td><a href="#clear()">clear</a>();</td></tr>
				<tr><td align="right">int </td><td><a href="#count() const">count</a>() const;</td></tr>
				<tr><td align="right">BRect </td><td><a href="#itemRect(int) const">itemRect</a>(int index) const;</td></tr>
				<tr><td align="right">int </td><td><a href="#indexOf(const BObject*) const">indexOf</a>(const BObject* object) const;</td></tr>
				<tr><td align="right">virtual bool </td><td><a href="#sort(int)">sort</a>(int dir = 1);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#finish(const BValue&)">finish</a>(const BValue&amp; value = BValue());</td></tr>
				<tr><td align="right">virtual const BString&amp; </td><td><a href="#realTips() const">realTips</a>() const;</td></tr>
				<tr><td align="right">virtual BSize </td><td><a href="#sizeHint() const">sizeHint</a>() const;</td></tr>
			</table>
			<h2>protected</h2>
			<table id="protected">
				<tr><td align="right">virtual void </td><td><a href="#popupEvent(const BEvent&)">popupEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#activeEvent(const BEvent&)">activeEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#resizeEvent(const BEvent&)">resizeEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#adjustEvent(const BEvent&)">adjustEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#styleEvent(const BEvent&)">styleEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#freshEvent(const BEvent&)">freshEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#paintEvent(const BEvent&)">paintEvent</a>(const BEvent&amp; event);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseEnterEvent(const BMouseEvent&)">mouseEnterEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseLeaveEvent(const BMouseEvent&)">mouseLeaveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mousePressEvent(const BMouseEvent&)">mousePressEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseReleaseEvent(const BMouseEvent&)">mouseReleaseEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseMoveEvent(const BMouseEvent&)">mouseMoveEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
				<tr><td align="right">virtual void </td><td><a href="#mouseClickEvent(const BMouseEvent&)">mouseClickEvent</a>(const BMouseEvent&amp; mouseEvent);</td></tr>
			</table>
			<div id="desc">
				<h2>详细介绍：</h2>
				<p>BMenu是菜单控件，包含子菜单和行为（<a href="BAction.html">BAction</a>），常以弹出的方式为操作提供选择。</p><p>当行为项被点击后，行为自身发出的信号Signal_Triggered会被菜单捕获，那么此菜单以及其父菜单都会发出信号Signal_Triggered，其值为被激发的行为（BAction）。</p><p>当点击行为后菜单及其父菜单的工作就完成了，finish()方法会被执行，发出完成信号：Signal_Finished。</p><p>菜单是一个控件，那么可以拥有布局器和子控件，在自定义菜单时利用其弹出的特性使交互更轻松，但其内容是自由设计的。这种情况下常常需要自主决定结束方式，那么可以调用方法finish(value)来结束工作，其参数会伴随信号Signal_Finshed一同使用。</p><p>菜单类的提供对项的显示效果的方法，这此方法是提供总体预设效果。因为菜单中内容是项，所以其显示的效果最终由项的样式控件。</p><p>菜单中常包含众多的内容项，对这些进行分组是很有必要的。分组的方式通常是在菜单中加入分隔符（separator），即一个不是行为也不是菜单的项。这样的分隔项会应用附件样式separator。</p><h4>信号表：</h4><table>
					<tr><td>Signal_OrientationChanged</td><td>当菜单的方向被改变时发出，值为：Orientation orientation。</td></tr>
					<tr><td>Signal_OffsetChanged</td><td>当菜单的弹出偏移值改变时发出，值为：BPoint offset。</td></tr>
					<tr><td>Signal_Insert</td><td>当菜单添加了一个行为项时发出，值为：BAction* action，附件为菜单自身。</td></tr>
					<tr><td>Signal_Remove</td><td>当菜单移除了一个行为项时发出，值为：BAction* action，附件为菜单自身。</td></tr>
					<tr><td>Signal_Finished</td><td>当菜单的方法finish()被执行时发出，值为finish()方法指定的值，通常为：BAction* action。</td></tr>
					<tr><td>Signal_Checked</td><td>当一个行为项的状态转换为选中状态时发出，值为：BAction* action。</td></tr>
					<tr><td>Signal_ActionHovered</td><td>当一个行为项被悬停时发出此信号，值为：BAction* action。</td></tr>
					<tr><td>Signal_ActionClicked</td><td>当一个行为项被点击时发出，值为：BAction* action。</td></tr></table>
			</div>
			<h2 id="docs">成员文档：</h2>
			<div id="BMenu(BWidget*)">
				<h3>BMenu(BWidget* parent = 0);</h3>
				<p>构造一个菜单，parent指定其父控件。</p>
			</div>
			<div id="BMenu(const BString&,BWidget*)">
				<h3>BMenu(const BString&amp; title, BWidget* parent = 0);</h3>
				<p>构造一个菜单，title指定其标题，parent指定其父控件。</p><p>title通常显示于菜单栏（BMenuBar）和父菜单（BMenu）。</p>
			</div>
			<div id="BMenu(BIcon*, const BString&,BWidget*)">
				<h3>BMenu(BIcon* icon, const BString&amp; title, BWidget* parent = 0);</h3>
				<p>构造一个菜单，icon指定其图标，title指定其标题，parent指定其父控件。</p><p>icon和title通常显示于菜单栏（BMenuBar）和父菜单（BMenu）。</p>
			</div>
			<div id="~BMenu()">
				<h3>~BMenu();</h3>
				<p>析构一个菜单。</p><p>在析构过程中会清除所有内容对象，且会断开与子菜单和行为项的信号关联。</p>
			</div>
			<div id="setAlign(Align)">
				<h3>void setAlign(Align align);</h3>
				<p>设置菜单项的预设的显示对齐方式。</p>
			</div>
			<div id="align() const">
				<h3>Align align() const;</h3>
				<p>设置菜单项的预设的显示对齐方式。</p>
			</div>
			<div id="setForm(Form)">
				<h3>void setForm(Form form);</h3>
				<p>设置菜单项的预设的显示形式。</p>
			</div>
			<div id="form() const">
				<h3>Form form() const;</h3>
				<p>获得菜单项的预设的显示形式。</p>
			</div>
			<div id="setSpacing(int)">
				<h3>void setSpacing(int spacing);</h3>
				<p>设置菜单项的预设的图标与文本的间隔。</p>
			</div>
			<div id="spacing() const">
				<h3>int spacing() const;</h3>
				<p>获得菜单项的预设的图标与文本的间隔。</p>
			</div>
			<div id="setOrientation(Orientation)">
				<h3>void setOrientation(Orientation orientation);</h3>
				<p>设置菜单项的排布方向。</p>
			</div>
			<div id="orientation() const">
				<h3>Orientation orientation() const;</h3>
				<p>获得菜单项的排布方向。</p>
			</div>
			<div id="setShortcutVisible(bool)">
				<h3>void setShortcutVisible(bool shortcutVisible);</h3>
				<p>设置此菜单是否显示快捷键的文本，是默认情况是显示的。</p>
			</div>
			<div id="shortcutVisible() const">
				<h3>bool shortcutVisible() const;</h3>
				<p>获得此菜单是否显示快捷键的文本。</p>
			</div>
			<div id="setOffset(int, int)">
				<h3>void setOffset(int offx, int offy);</h3>
				<p>设置弹出时的位置偏移向量。此值是会用于弹出此菜单的执行处，菜单自身不理会此偏移值。</p>
			</div>
			<div id="setOffset(const BPoint&)">
				<h3>void setOffset(const BPoint&amp; offset);</h3>
				<p>设置弹出时的位置偏移向量。此值是会用于弹出此菜单的执行处，菜单自身不理会此偏移值。</p>
			</div>
			<div id="offset() const">
				<h3>const BPoint&amp; offset() const;</h3>
				<p>获得弹出时的位置偏移向量。</p>
			</div>
			<div id="setIconSize(const BSize&)">
				<h3>void setIconSize(const BSize&amp; iconSize);</h3>
				<p>设置菜单项的图标尺寸。</p>
			</div>
			<div id="iconSize() const">
				<h3>const BSize&amp; iconSize() const;</h3>
				<p>获得菜单项的图标尺寸。</p>
			</div>
			<div id="addAction(BAction*)">
				<h3>bool addAction(BAction* action);</h3>
				<p>添加一个行为项，此方法会连接这个行为的若干信号。</p>
			</div>
			<div id="addAction(const BString&)">
				<h3>BAction* addAction(const BString&amp; text);</h3>
				<p>新建一个行为项并添加到此菜单中，text指定新建行为的文本。</p>
			</div>
			<div id="addAction(BIcon*, const BString&)">
				<h3>BAction* addAction(BIcon* icon, const BString&amp; text);</h3>
				<p>新建一个行为项并添加到此菜单中，icon指定新建行为的图标，text指定新建行为的文本。</p>
			</div>
			<div id="addAction(BImage*, const BString&)">
				<h3>BAction* addAction(BImage* image, const BString&amp; text);</h3>
				<p>新建一个行为项并添加到此菜单中，image指定新建行为的图像，text指定新建行为的文本。</p>
			</div>
			<div id="insertAction(int, BAction*)">
				<h3>bool insertAction(int pos, BAction* action);</h3>
				<p>向菜单的pos位置插入一个行为项，此方法会连接这个行为的若干信号。</p>
			</div>
			<div id="insertAction(int, const BString&)">
				<h3>BAction* insertAction(int pos, const BString&amp; text);</h3>
				<p>新建一个行为项并插入到此菜单中pos位置，text指定新建行为的文本。</p>
			</div>
			<div id="insertAction(int, BIcon*, const BString&)">
				<h3>BAction* insertAction(int pos, BIcon* icon, const BString&amp; text);</h3>
				<p>新建一个行为项并插入到此菜单中pos位置，icon指定新建行为的图标，text指定新建行为的文本。</p>
			</div>
			<div id="insertAction(int, BImage*, const BString&)">
				<h3>BAction* insertAction(int pos, BImage* image, const BString&amp; text);</h3>
				<p>新建一个行为项并插入到此菜单中pos位置，image指定新建行为的图像，text指定新建行为的文本。</p>
			</div>
			<div id="removeAction(BAction*)">
				<h3>bool removeAction(BAction* action);</h3>
				<p>移除一个行为项，断开与此行为的信号连接。</p>
			</div>
			<div id="removeAction(const BString&)">
				<h3>bool removeAction(const BString&amp; text);</h3>
				<p>将文本同于text的行为顶移除。</p>
			</div>
			<div id="action(int)">
				<h3>BAction* action(int index);</h3>
				<p>取得index索引位置的行为项。</p>
			</div>
			<div id="action(int) const">
				<h3>const BAction* action(int index) const;</h3>
				<p>取得index索引位置的行为项。</p>
			</div>
			<div id="action(const BString&)">
				<h3>BAction* action(const BString&amp; text);</h3>
				<p>取得文本为text的行为项。</p>
			</div>
			<div id="action(const BString&) const">
				<h3>const BAction* action(const BString&amp; text) const;</h3>
				<p>取得文本为text的行为项。</p>
			</div>
			<div id="actionOfAsset(const BValue&)">
				<h3>BAction* actionOfAsset(const BValue&amp; value);</h3>
				<p>取得资源等于value的行为项。</p>
			</div>
			<div id="actionOfAsset(const BValue&) const">
				<h3>const BAction* actionOfAsset(const BValue&amp; value) const;</h3>
				<p>取得资源等于value的行为项。</p>
			</div>
			<div id="findAction(const BString&)">
				<h3>BAction* findAction(const BString&amp; text);</h3>
				<p>在此菜单和子菜单中寻找文本等于text的行为对象。</p>
			</div>
			<div id="findAction(const BString&) const">
				<h3>const BAction* findAction(const BString&amp; text) const;</h3>
				<p>在此菜单和子菜单中寻找文本等于text的行为对象。</p>
			</div>
			<div id="namedAction(const BString&)">
				<h3>BAction* namedAction(const BString&amp; name);</h3>
				<p>在此菜单和子菜单中寻找名称等于name的行为对象。</p>
			</div>
			<div id="namedAction(const BString&) const">
				<h3>const BAction* namedAction(const BString&amp; name) const;</h3>
				<p>在此菜单和子菜单中寻找名称等于name的行为对象。</p>
			</div>
			<div id="locateAction(const BString&)">
				<h3>BAction* locateAction(const BString&amp; path);</h3>
				<p>按照指定的路径逐层找到一个行为。</p><p>如：file/create/import，表示当前菜单下的file标题的菜单下的create标题的菜单下的import文本的行为对象。</p>
			</div>
			<div id="locateAction(const BString&) const">
				<h3>const BAction* locateAction(const BString&amp; path) const;</h3>
				<p>按照指定的路径逐层找到一个行为。</p>
			</div>
			<div id="addMenu(BMenu*)">
				<h3>bool addMenu(BMenu* menu);</h3>
				<p>添加一个子菜单，连接子菜单的若干信号。</p>
			</div>
			<div id="addMenu(const BString&)">
				<h3>BMenu* addMenu(const BString&amp; title);</h3>
				<p>新建一个标题为title的菜单，并添加到此菜单中。</p>
			</div>
			<div id="addMenu(BIcon*, const BString&)">
				<h3>BMenu* addMenu(BIcon* icon, const BString&amp; title);</h3>
				<p>新建一个菜单并添加到此菜单中，icon指定新菜单的图标，title指定新菜单的标题。</p>
			</div>
			<div id="insertMenu(int, BMenu*)">
				<h3>bool insertMenu(int pos, BMenu* menu);</h3>
				<p>插入一个子菜单到pos位置，连接子菜单的若干信号。</p>
			</div>
			<div id="insertMenu(int, const BString&)">
				<h3>BMenu* insertMenu(int pos, const BString&amp; title);</h3>
				<p>新建一个菜单并插入到此菜单的pos位置，title指定新菜单的标题。</p>
			</div>
			<div id="insertMenu(int, BIcon*, const BString&)">
				<h3>BMenu* insertMenu(int pos, BIcon* icon, const BString&amp; title);</h3>
				<p>新建一个菜单并插入到此菜单的pos位置，icon指定新菜单的图标，title指定新菜单的标题。</p>
			</div>
			<div id="removeMenu(BMenu*)">
				<h3>bool removeMenu(BMenu* menu);</h3>
				<p>移除一个子菜单，断开与之的所有信号连接。</p>
			</div>
			<div id="removeMenu(const BString&)">
				<h3>bool removeMenu(const BString&amp; title);</h3>
				<p>移除一个标题为title的子菜单。</p>
			</div>
			<div id="menu(int)">
				<h3>BMenu* menu(int index);</h3>
				<p>取得index索引位置的菜单项的内容，如果此项是子菜单则返回之，否则返回空对象。</p>
			</div>
			<div id="menu(int) const">
				<h3>const BMenu* menu(int index) const;</h3>
				<p>取得index索引位置的菜单项的内容，如果此项是子菜单则返回之，否则返回空对象。</p>
			</div>
			<div id="menu(const BString&)">
				<h3>BMenu* menu(const BString&amp; title);</h3>
				<p>取得标题为title的子菜单.</p>
			</div>
			<div id="menu(const BString&) const">
				<h3>const BMenu* menu(const BString&amp; title) const;</h3>
				<p>取得标题为title的子菜单.</p>
			</div>
			<div id="menuOfAsset(const BValue&)">
				<h3>BMenu* menuOfAsset(const BValue&amp; value);</h3>
				<p>取得值资产为value的子菜单.</p>
			</div>
			<div id="menuOfAsset(const BValue&) const">
				<h3>const BMenu* menuOfAsset(const BValue&amp; value) const;</h3>
				<p>取得值资产为value的子菜单.</p>
			</div>
			<div id="findMenu(const BString&)">
				<h3>BMenu* findMenu(const BString&amp; title);</h3>
				<p>在此菜单和子菜单中寻找标题为title的子菜单。</p>
			</div>
			<div id="findMenu(const BString&) const">
				<h3>const BMenu* findMenu(const BString&amp; title) const;</h3>
				<p>在此菜单和子菜单中寻找标题为title的子菜单。</p>
			</div>
			<div id="locateMenu(const BString&)">
				<h3>BMenu* locateMenu(const BString&amp; path);</h3>
				<p>按照指定的路径逐层找到一个行为。</p><p>如：file/create，表示当前菜单下的file标题的菜单下的create标题的菜单对象。</p>
			</div>
			<div id="locateMenu(const BString&) const">
				<h3>const BMenu* locateMenu(const BString&amp; path) const;</h3>
				<p>按照指定的路径逐层找到一个行为。</p>
			</div>
			<div id="addSeparator()">
				<h3>bool addSeparator();</h3>
				<p>添加一个分隔符。</p>
			</div>
			<div id="insertSeparator(int)">
				<h3>bool insertSeparator(int index);</h3>
				<p>在index索引位置插入一个分隔符。</p>
			</div>
			<div id="insertSeparator(const BObject*)">
				<h3>bool insertSeparator(const BObject* before);</h3>
				<p>在菜单项before前面位置插入一个分隔符。</p>
			</div>
			<div id="isSeparator(int)">
				<h3>bool isSeparator(int index);</h3>
				<p>判断菜单的index位置的项是否为分隔符，也就是说此项是否为空。</p>
			</div>
			<div id="removeSeparator(int)">
				<h3>bool removeSeparator(int index);</h3>
				<p>若index位置的菜单项是分隔符，那么删除此项。</p>
			</div>
			<div id="clear()">
				<h3>void clear();</h3>
				<p>清除所有菜单项，包括行为项，分隔符，子菜单。</p>
			</div>
			<div id="count() const">
				<h3>int count() const;</h3>
				<p>获得所有菜单项的数量，包括行为项，分隔符，子菜单。</p>
			</div>
			<div id="itemRect(int) const">
				<h3>BRect itemRect(int index) const;</h3>
				<p>获得在index索引位置的菜单项的矩形区域。</p>
			</div>
			<div id="indexOf(const BObject*) const">
				<h3>int indexOf(const BObject* object) const;</h3>
				<p>获得内容对象为object的菜单项的索引值。</p>
			</div>
			<div id="sort(int)">
				<h3>virtual bool sort(int dir = 1);</h3>
				<p>对菜单项按照文本的大小进行排序，dir指定其规则是由大到小还是由小到大。</p>
			</div>
			<div id="finish(const BValue&)">
				<h3>virtual void finish(const BValue&amp; value = BValue());</h3>
				<p>此方法用于结束菜单，其行为是将此菜单以及其上父菜单时行隐藏，且发出信号：Signal_Finished，并附上给定的值value。需要注意的是此方法只会隐藏当前是弹出状态的菜单。</p>
			</div>
			<div id="realTips() const">
				<h3>virtual const BString&amp; realTips() const;</h3>
				<p>获得实际提示语，返回当前被悬停的菜单项的提示语。</p>
			</div>
			<div id="sizeHint() const">
				<h3>virtual BSize sizeHint() const;</h3>
				<p>计算合适的尺寸。</p>
			</div>
			<div id="popupEvent(const BEvent&)">
				<h3>virtual void popupEvent(const BEvent&amp; event);</h3><p>当菜单弹出时，校正菜单的大小为适合的大小，并确保位于根控件的区域内。</p>
			</div>
			<div id="activeEvent(const BEvent&)">
				<h3>virtual void activeEvent(const BEvent&amp; event);</h3><p>当菜单的活跃状态改变为false时，隐藏此菜单。</p>
			</div>
			<div id="resizeEvent(const BEvent&)">
				<h3>virtual void resizeEvent(const BEvent&amp; event);</h3><p>当菜单的尺寸改变时重新调整布局。</p>
			</div>
			<div id="adjustEvent(const BEvent&)">
				<h3>virtual void adjustEvent(const BEvent&amp; event);</h3><p>当此菜单为弹出状态时，若调整事件发出则将此菜单的尺寸改变为合适的尺寸。</p>
			</div>
			<div id="styleEvent(const BEvent&)">
				<h3>virtual void styleEvent(const BEvent&amp; event);</h3>
				<p>信号取值表：</p><table>
					<tr><td>Icon_Arrow_Right</td><td>取值为子菜单的指示箭头图标，值为：BIcon* arrowIcon。</td></tr>
					<tr><td>Value_Offset</td><td>取值为菜单弹出的偏移值，值为：BPoint offset。</td></tr>
					<tr><td>Value_Align</td><td>取值为菜单项显示的对齐方式，值为：Align align。</td></tr>
					<tr><td>Value_Form</td><td>取值为菜单项显示的形式，值为：Form form。</td></tr>
					<tr><td>Value_Spacing</td><td>取值为菜单项的图标与文本的间距，值为：int spacing。</td></tr>
					<tr><td>Value_Icon_Size</td><td>取值为菜单项的图标尺寸值，值为：BSize iconSize。</td></tr>
					<tr><td>Value_Arrow_Size</td><td>取值为子菜单提示箭头的尺寸值，值为：BSize arrowSize。</td></tr>
					<tr><td>Value_Arrow_Graph</td><td>取值为子菜单箭头的图样，值为：Graph arrowGraph。</td></tr>
					<tr><td>Value_Arrow_Align</td><td>取值为子菜单提示箭头的对齐方式，值为：Align arrowAlign。</td></tr>
					<tr><td>Value_Orientation</td><td>取值为此菜单的布局方向，值为：Orientation orientation。</td></tr></table><p>附件样式separator：</p><table>
					<tr><td>Value_Width</td><td>取值为分隔器宽度值，值为：int separatorWidth。</td></tr>
					<tr><td>Value_Height</td><td>取值为分隔器的高度值，值为：int separatorHeight。</td></tr>
					<tr><td>Value_Image</td><td>取值为分隔器绘制的图像，值为：BImage* separatorImage。</td></tr></table><p>附近样式shortcut，用于指示快捷键文本的显示样式：</p><table>
					<tr><td>Value_Visible</td><td>取值为当前菜单中行为项的快捷键文本是否显示，值为：bool shortcutVisible。</td></tr>
					<tr><td>Value_Spacing</td><td>取值为当前菜单中行为项的内容区域与快捷键文本显示区域之间的间隔，值为：shortcutSpacing。</td></tr></table>
			</div>
			<div id="freshEvent(const BEvent&)">
				<h3>virtual void freshEvent(const BEvent&amp; event);</h3><p>调整各个菜单项的显示布局。</p>
			</div>
			<div id="paintEvent(const BEvent&)">
				<h3>virtual void paintEvent(const BEvent&amp; event);</h3><p>绘制各个菜单项。</p>
			</div>
			<div id="mouseEnterEvent(const BMouseEvent&)">
				<h3>virtual void mouseEnterEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新悬停状态。</p>
			</div>
			<div id="mouseLeaveEvent(const BMouseEvent&)">
				<h3>virtual void mouseLeaveEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新悬停状态。</p>
			</div>
			<div id="mousePressEvent(const BMouseEvent&)">
				<h3>virtual void mousePressEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新鼠标左键按下状态。</p>
			</div>
			<div id="mouseReleaseEvent(const BMouseEvent&)">
				<h3>virtual void mouseReleaseEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新鼠标左键按下状态。</p>
			</div>
			<div id="mouseMoveEvent(const BMouseEvent&)">
				<h3>virtual void mouseMoveEvent(const BMouseEvent&amp; mouseEvent);</h3><p>更新菜单项被悬停状态。</p>
			</div>
			<div id="mouseClickEvent(const BMouseEvent&)">
				<h3>virtual void mouseClickEvent(const BMouseEvent&amp; mouseEvent);</h3><p>当行为项被点击时产生信号： Signal_ActionClicked。当菜单项被点击时切换子菜单的弹出状态。</p>
			</div>
		</div>
	</body>
</html>